{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Multiclass oversampling\n",
    "\n",
    "In this notebook, multiclass oversampling is illustrated. The number of oversampling techniques supporting multiclass oversampling is limited, most of the oversamplers are formulated for binary oversampling problems. However, multiclass oversampling can be implemented as binary oversampling applied repeatedly to various combinations of classes. This approach is not supported by all binary oversamplers, for example, by those changing the majority samples. In the current version of the ```smote_variants``` package, there are 61 binary oversamplers which can be used for multiclass oversampling. The list of these can be queried by the function ```get_all_oversamplers_multiclass```."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import smote_variants as sv\n",
    "import sklearn.datasets as datasets\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# loading the dataset\n",
    "dataset= datasets.load_wine()\n",
    "X, y= dataset['data'], dataset['target']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Illustrating the imbalanced nature\n",
    "\n",
    "The imbalanced nature of the multiclass ```wine``` dataset is illustrated."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x7f022b478940>"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAl8AAAFNCAYAAAA+SQoQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3X14XWWd7//3NyWVRphAH+YIlDRFPII0TcVARYaiZhx8Ah1AjxCB+pQzzlHaixGPx+iUFsI1/A4zE2aYI6cVFXTLADpyqAOiV6rj+AitEkKFmQpt2iIqBAnFgKTN/ftj7d3u7KyVrP2w1l5r7c/runIlWXvtte699mr3N/f9vb+3OecQERERkXg01bsBIiIiIo1EwZeIiIhIjBR8iYiIiMRIwZeIiIhIjBR8iYiIiMRIwZeIiIhIjBR8iUgkzOwmM/tsrfed5TjtZubM7LCQ+3/JzK6p9rwiIuUI9R+UiEi5nHN/EcW+9WJm3wO+4pz7fBbOIyL1o54vEak5M5tT7zaIiCSVgi8RCcXMTjaz75nZs2a23czOK3rsS2b2OTO7x8x+D7ypdEjPzD5pZk+a2a/M7MP54cETi55/Tf7nN5rZXjP7KzP7bf45Hyg6zjvM7Odm9pyZ7TGzq8p4Da81s5+Z2T4zux04vOixo83sm2b2lJn9Lv/z4vxj/cBZwI1m9ryZ3ZjffkO+Dc+Z2TYzO6voeKeb2db8Y78xs78reuz1Zvaj/LUcMrM3znQeEckWBV8iMiszawY2A98G/hj4OJAzs1cX7XYx0A8cCfyg5PlvBa4A/hQ4ETh7llO+AmgFjgM+BPyTmR2df+z3wKXAUcA7gI+a2btDvIa5wF3Al4H5wJ3ABUW7NAFfBJYAbcALwI0Azrk+4N+BjznnjnDOfSz/nAeAFfnjfRW408wKAd0NwA3OuT8CXgnckW/HccC/Atfkn/cJ4OtmtmiG84hIhij4EpEwXg8cAfyNc+4l59wW4JvARUX7/D/n3A+dc5POuRdLnv9e4IvOue3OuXFg/SznmwA2OOcmnHP3AM8DrwZwzn3POTecP89DwG3MHswVXkMzMJA/7tfwgifyxx11zn3dOTfunNuHF0jOeFzn3Ffyz9vvnPtb4GWFduZfw4lmttA597xz7if57e8H7nHO3ZN/Dd8BtgJvD/EaRCQDFHyJSBjHAnucc5NF20bweqYK9sz2/JD7Aow65/YX/T6OF/xhZivN7Lv54cEx4C+AhbO9gHwbnnDOuaJtI4UfzKzFzP6vmY2Y2XPA94GjZspfyw+NPmJmY2b2LF5vXaEtHwL+K/ComT1gZu/Mb18CvCc/5Phs/nl/AhwT4jWISAYo+BKRMH4FHG9mxf9ntAFPFP3uCPYksLjo9+OraMtXgbuB451zrcBNgIV43pPAcWZWvG9b0c9/hddrtTI/VLgqv72w/5TXl8/v+p94vXpHO+eOAsYK+zvndjjnLsIbpr0O+JqZvRwv8Pyyc+6ooq+XO+f+xu88IpI9Cr5EJIyf4uVafdLMmvMJ4ucC/xzy+XcAH8gn7bcAf11FW44EnnHOvWhmp+PlmoXxY2A/cLmZHWZm5wOnlxz3BeBZM5sPrCt5/m+AE0r23w88BRxmZn8N/FHhQTN7fz6PaxJ4Nr/5APAV4FwzO8fM5pjZ4flJBoXgtPQ8IpIxCr5EZFbOuZeA84C3AU8D/we41Dn3aMjn3wv8A/Bd4Jd4gRDAHypozl8CG8xsH14Qd0fINrwEnA+sBn4H/DfgX4p2GQDm4b2+nwDfKjnEDcCF+ZmQ/wDcB9wL/Cfe8OWLTB1OfSuw3cyezz/3fc65F51ze4B3AZ/GC9z2AFdy6P/j0vOISMbY1PQHEZHomdnJwMPAy0pyu0REMk89XyISCzP7czObmy8ZcR2wWYGXiDQiBV8iEpf/jjfM9hhe7tNH69scEZH60LCjiIiISIzU8yUiIiISIwVfIiIiIjE6rN4NKLZw4ULX3t5e72aIiIiIzGrbtm1PO+cWlfu8SIMvMzsK+DywDK9q8wedcz8O2r+9vZ2tW7dG2SQRERGRmjCzkdn3mi7qnq8bgG855y40s7lAS8TnExEREUm0yIIvMyusjbYaDlaXfimq84mIiIikQZQJ9yfg1fT5opn93Mw+n19Udgoz6zWzrWa29amnnoqwOSIiIiL1F1mdLzPrwlsf7Uzn3E/N7AbgOefcZ4Oe09XV5ZTzJSIiUh8TExPs3buXF198sd5NSZTDDz+cxYsX09zcPGW7mW1zznWVe7woc772Anudcz/N//414FMRnk9ERESqsHfvXo488kja29sxs3o3JxGcc4yOjrJ3716WLl1ak2NGNuzonPs1sMfMXp3f1A38IqrziYiISHVefPFFFixYoMCriJmxYMGCmvYGRj3b8eNALj/T8XHgAxGfT0RERKqgwGu6Wl+TSCvcO+cedM51OeeWO+fe7Zz7XZTnExERkey56qqruP766yM59rZt2+jo6ODEE0/k8ssvJ441r7W8kIiIiDSsj370o2zcuJEdO3awY8cOvvWtb0V+TgVfIiIBhodzDAy0s359EwMD7QwP5+rdJJFk2ZmDu9rhq03e953V/xu59dZbWb58OZ2dnVxyySXTHt+0aROnnXYanZ2dXHDBBYyPjwNw5513smzZMjo7O1m1ahUA27dv5/TTT2fFihUsX76cHTt2TDnWk08+yXPPPccZZ5yBmXHppZdy1113Vf0aZpOotR1FRJJieDjH5s29TEx4/7GPjY2weXMvAB0dPfVsmkgy7MzB/b1wwPs3wviI9zvA0sr+jWzfvp3+/n5++MMfsnDhQp555plp+5x//vl85CMfAeAzn/kMN998Mx//+MfZsGED9913H8cddxzPPvssADfddBNr1qyhp6eHl156iQMHDkw51hNPPMHixYsP/r548WKeeOKJitpeDvV8iYj4GBzsOxh4FUxMjDM42FenFokkzFDfocCr4MC4t71CW7Zs4cILL2ThwoUAzJ8/f9o+Dz/8MGeddRYdHR3kcjm2b98OwJlnnsnq1avZtGnTwSDrjDPO4Nprr+W6665jZGSEefPmTTmWX35XHBMOFHyJiPgYG9td1naRhjMe8G8haHsIzrlZg5/Vq1dz4403Mjw8zLp16w6WgLjpppu45ppr2LNnDytWrGB0dJSLL76Yu+++m3nz5nHOOeewZcuWKcdavHgxe/fuPfj73r17OfbYYytuf1gKvkREfLS2tpW1XaThtAT8WwjaHkJ3dzd33HEHo6OjAL7Djvv27eOYY45hYmKCXO5Qjtljjz3GypUr2bBhAwsXLmTPnj08/vjjnHDCCVx++eWcd955PPTQQ1OOdcwxx3DkkUfyk5/8BOcct956K+9617sqbn9YCr5ERHx0d/fT3NwyZVtzcwvd3f11apFIwnT2w5yp/0aY0+Jtr9App5xCX18fZ599Np2dnVxxxRXT9rn66qtZuXIlb3nLWzjppJMObr/yyivp6Ohg2bJlrFq1is7OTm6//XaWLVvGihUrePTRR7n00kunHe9zn/scH/7whznxxBN55Stfydve9raK2x9WZGs7VkJrO4pIkgwP5xgc7GNsbDetrW10d/cr2V4y7ZFHHuHkk08O/4SdOS/Ha3y31+PV2V9xsn3S+V2bJK7tKCKSah0dPQq2IpTLQV8f7N4NbW3Q3w89utzpsrQns8FWlBR8iYhI7HI56O2FfIkmRka830EBmGSfcr5ERCR2fX2HAq+C8XFvu0jWKfgSEZHY7Q6oRhC0XSRLFHyJiEjs2gKqEQRtF8kSBV8iIhK7/n5oKalS0NLibRfJOgVfIiISu54e2LgRliwBM+/7xo1Kthd/V111Fddff30kx+7r6+P444/niCOOiOT4fhR8iQjgzT5rb4emJu97UeFokUj09MCuXTA56X1X4CX1cO6553L//ffHek4FXyJycNr/yAg4d2javwIwEZnJ8HCOgYF21q9vYmCgneHh6v/TuPXWW1m+fDmdnZ1ccskl0x7ftGkTp512Gp2dnVxwwQWM56fN3nnnnSxbtozOzk5WrVoFwPbt2zn99NNZsWIFy5cvZ8eOHdOO9/rXv55jjjmm6naXQ8GXiGjav4iUbXg4x+bNvYyNjQCOsbERNm/urSoA2759O/39/WzZsoWhoSFuuOGGafucf/75PPDAAwwNDXHyySdz8803A7Bhwwbuu+8+hoaGuPvuuwFvse01a9bw4IMPsnXrVhYvXlxx22pJwZeIaNq/iJRtcLCPiYmpf7VNTIwzOFj5X21btmzhwgsvZOHChQDMnz9/2j4PP/wwZ511Fh0dHeRyObZv3w7AmWeeyerVq9m0aRMHDhwA4IwzzuDaa6/luuuuY2RkhHnz5lXctlpS8CUimvYvImUbG/P/6yxoexjOOcxsxn1Wr17NjTfeyPDwMOvWrePFF18EvF6ua665hj179rBixQpGR0e5+OKLufvuu5k3bx7nnHMOW7ZsqbhttaTgS0Q07V9Eytba6v/XWdD2MLq7u7njjjsYHR0F4Jlnnpm2z759+zjmmGOYmJggV5SY+thjj7Fy5Uo2bNjAwoUL2bNnD48//jgnnHACl19+Oeeddx4PPfRQxW2rJQVfIqJp/yJStu7ufpqbp/7V1tzcQnd35X+1nXLKKfT19XH22WfT2dnJFVdcMW2fq6++mpUrV/KWt7yFk0466eD2K6+8ko6ODpYtW8aqVavo7Ozk9ttvZ9myZaxYsYJHH32USy+9dNrxPvnJT7J48WLGx8dZvHgxV111VcXtD8ucc5GfJKyuri63devWejdDRESkIT3yyCOcfPLJofcfHs4xONjH2NhuWlvb6O7up6Mjm3+1+V0bM9vmnOsq91iH1axVIiIi0lA6OnoyG2xFScOOIiIiIjFS8CUiIiISIwVfIiIiIjFS8CUiIiISIwVfIiIiIjFS8CUiIiKJdtVVV3H99dfX/Ljj4+O84x3v4KSTTuKUU07hU5/6VM3P4UfBl4hIRHI5aG+Hpibve67y9YZFJCKf+MQnePTRR/n5z3/OD3/4Q+69997Iz6ngS0QkArkc9PbCyAg4533v7VUAJtkSxR8Yt956K8uXL6ezs5NLLrlk2uObNm3itNNOo7OzkwsuuIDxcW9x7zvvvJNly5bR2dnJqlWrANi+fTunn346K1asYPny5ezYsWPKsVpaWnjTm94EwNy5czn11FPZu3dv9S9iFgq+REQi0NcH+c+Eg8bHve0iWRDFHxjbt2+nv7+fLVu2MDQ0xA033DBtn/PPP58HHniAoaEhTj75ZG6++WYANmzYwH333cfQ0BB333034C22vWbNGh588EG2bt3K4sWLA8/97LPPsnnzZrq7uyt/ASEp+BIRicDu3eVtF0mbKP7A2LJlCxdeeCELFy4EYP78+dP2efjhhznrrLPo6Oggl8uxfft2AM4880xWr17Npk2bOHDgAABnnHEG1157Lddddx0jIyPMmzfP97z79+/noosu4vLLL+eEE06o/AWEpOBLRCQCbW3lbRdJmyj+wHDOYWYz7rN69WpuvPFGhoeHWbduHS+++CLg9XJdc8017NmzhxUrVjA6OsrFF1/M3Xffzbx58zjnnHPYsmWL7zF7e3t51atexdq1aytvfBkUfImIRKC/H1papm5rafG2i2RBFH9gdHd3c8cddzA6OgrAM888M22fffv2ccwxxzAxMUGuaIzzscceY+XKlWzYsIGFCxeyZ88eHn/8cU444QQuv/xyzjvvPB566KFpx/vMZz7D2NgYAwMDlTe8TAq+REQi0NMDGzfCkiVg5n3fuNHbLpIFUfyBccopp9DX18fZZ59NZ2cnV1xxxbR9rr76alauXMlb3vIWTjrppIPbr7zySjo6Oli2bBmrVq2is7OT22+/nWXLlrFixQoeffRRLr300inH2rt3L/39/fziF7/g1FNPZcWKFXz+85+v/AWEZM65yE8S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\n",
      "text/plain": [
       "<Figure size 720x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plotting the dataset to illustrate its imbalanced nature. Only the first two coordinates are plotted.\n",
    "colors= ['orange', 'olive', 'blue']\n",
    "\n",
    "plt.figure(figsize=(10, 5))\n",
    "for i in np.unique(y):\n",
    "    plt.scatter(X[y == i][:,0], X[y == i][:,1], label='class %d' % i, c= colors[i])\n",
    "plt.title('original dataset')\n",
    "plt.xlabel('coordinate 0')\n",
    "plt.ylabel('coordinate 1')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "class 0 - samples: 59\n",
      "class 1 - samples: 71\n",
      "class 2 - samples: 48\n"
     ]
    }
   ],
   "source": [
    "# printing the number of samples\n",
    "\n",
    "for i in np.unique(y):\n",
    "    print(\"class %d - samples: %d\" % (i, np.sum(y == i)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Oversampling\n",
    "\n",
    "In this section multiclass oversampling is driven by the binary oversampler ```distance_SMOTE```."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# chosing an oversampler supporting multiclass oversampling\n",
    "\n",
    "oversampler= sv.MulticlassOversampling(sv.distance_SMOTE())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2019-06-11 18:18:25,764:INFO:MulticlassOversampling: Running multiclass oversampling with strategy equalize_1_vs_many_successive\n",
      "2019-06-11 18:18:25,765:INFO:MulticlassOversampling: Sampling minority class with label: 0\n",
      "2019-06-11 18:18:25,765:INFO:distance_SMOTE: Running sampling via ('distance_SMOTE', \"{'proportion': 1.0, 'n_neighbors': 5, 'n_jobs': 1}\")\n",
      "2019-06-11 18:18:25,767:INFO:MulticlassOversampling: Sampling minority class with label: 2\n",
      "2019-06-11 18:18:25,768:INFO:distance_SMOTE: Running sampling via ('distance_SMOTE', \"{'proportion': 0.24468085106382978, 'n_neighbors': 5, 'n_jobs': 1}\")\n"
     ]
    }
   ],
   "source": [
    "X_samp, y_samp= oversampler.sample(X, y)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Illustrating the outcome"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "class 0 - samples: 71\n",
      "class 1 - samples: 71\n",
      "class 2 - samples: 71\n"
     ]
    }
   ],
   "source": [
    "# printing the number of samples\n",
    "\n",
    "for i in np.unique(y_samp):\n",
    "    print(\"class %d - samples: %d\" % (i, np.sum(y_samp == i)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "# filtering for new samples\n",
    "\n",
    "X_samp, y_samp= X_samp[len(X):], y_samp[len(y):]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "class 0 - samples: 12\n",
      "class 2 - samples: 23\n"
     ]
    }
   ],
   "source": [
    "# printing the number of new samples\n",
    "\n",
    "for i in np.unique(y_samp):\n",
    "    print(\"class %d - samples: %d\" % (i, np.sum(y_samp == i)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x7f022b3c7208>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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0lRQVVXF6tWro37c9vZ2rr76asaOHcu4ceO4++67o36ORPPoo49y++23x7sZAST4EiIOZLp6/8nEBWsSlDoruDRmApXKDNl3v/td9uzZw7vvvssbb7zBiy++GO8mpR0JvoQQSUkmLliToNQ5VVWwdGl3wKW1cb+qqn/HffzxxykqKsLlcnHzzTf3eHz9+vVMmjQJl8vF3Llzafe9wc888wwFBQW4XC5KS0sB2LlzJ5MnT6a4uJiioiIaGhoCjpWVlcWMGTMAGDRoEBMmTKCpqcniWqu49dZbufTSSxkzZgwPPPBA12MbNmzoOsc3v/lNOjo6ePrpp7uq89fU1HQt1r13716++MUv9jj+Aw88wIUXXkhRURE33ngjAJs3b+biiy9m/PjxXHzxxbz33nuA0XM1e/ZsZs2axejRo3nwwQe5//77GT9+PBdddFHXkkyXXnopS5Ys4eKLL6agoIDNmzf3OO/hw4eZO3cukyZNYtKkSbzxxhsA/OlPf6K4uJji4mLGjx9PW1ub7fsVFVrrhLlNnDhRCyFEKPLytDa+/gJveXnxbll8KWX9uigV75Ylpl27doW0X2en1hUVxmtZUWF9PxI7duzQX/jCF/Thw4e11lo3NzdrrbVesWKF/tnPfqa11vqjjz7q2r+yslI/8MADWmutCwoKdFNTk9Za608++URrrfXtt9+uN2zYoLXW+tNPP9Xt7e225/7kk0/06NGj9d69e3s8tmLFCj116lR9/PhxffjwYT18+HB94sQJvWvXLn3NNdfoEydOaK21vu222/Rjjz2mDx06pEtKSrTWWs+dO1eXlJTopqYm/eijj+q77767x/FHjhypjx8/HtD21tZW7fV6tdZa/+53v9Nz5szRWmv9yCOP6M9//vP6yJEj+sMPP9SnnXaa/vnPf6611nrJkiV6zZo1WmutL7nkEv31r39da631n/70Jz1u3Liu53/nO9/RWms9b948/dprr2mttW5sbNRjx47VWmt9zTXX6Ndff11rrXVbW1tXO/xZfVaAOh1BvCNFVoUQScntDixWCzJxAYxZs42N1ttF5JSCNWuM32tqjBtARYWxPdLFvDdt2sT1119PTk4OAMOHD++xz44dO1i+fDktLS0cPXqUmTNnAjBt2jQWLlzIDTfcwJw5cwCYOnUqbrebpqYm5syZw3nnnWd53pMnTzJv3jwWL17c1UsV7Oqrr+aUU07hlFNO4YwzzuDvf/87tbW1bNmyhUmTJgFw7NgxzjjjDM4880yOHj1KW1sbBw8eZP78+bz66qu89tprXW3zV1RURHl5ObNnz2b27NkAtLa2csstt9DQ0IBSCq/X27X/jBkzGDp0KEOHDiU7O5tZs2YBUFhYGLB4+Lx58wAoLS3lyJEjtLS0BJz397//Pbt27eq6f+TIEdra2pg2bRrLli2jvLycOXPmMGrUKMvXJFpk2FEIkZRk4oI1mU3rHP8AzNSfwAuM0SfVxwEWLlzIgw8+SH19PStWrOD48eMArF27lnsZL8mMAAAgAElEQVTvvZeDBw9SXFxMc3Mz8+fP5/nnn2fIkCHMnDmTTZs2WR5z0aJFnHfeeSxZssT2vKecckrX7wMGDODkyZNorbnlllvYunUrW7du5b333qPKN+46depUHnnkEc4//3ymT5/Oa6+9xptvvsm0adN6HPuFF17gO9/5Dlu2bGHixImcPHmSH/7wh8yYMYMdO3awcePGrusMbktGRkbX/YyMDE6ePNn1WPBrGXy/s7OTN998s6v9H3zwAUOHDuXuu+/moYce4tixY1x00UXs2bPH9nWJBgm+hBBJSyYu9CRBqXPMHC9//jlgkSgrK+Ppp5+mubkZoCt/yV9bWxsjR47E6/Xi8Zs5sXfvXqZMmcKqVavIycnh4MGDvP/++4wZM4bFixdz7bXXBvQKmZYvX05rayvV1dURtfeXv/wlH374YVd7G31draWlpaxevZrS0lLGjx/PH/7wB0455RSys7MDjtHZ2cnBgweZMWMGP/3pT7t69FpbWzn77LMBI88rEk899RQAr7/+OtnZ2T3Offnll/Pggw923d+6dStgvJaFhYV873vfo6SkRIIvIYQQ4ZGgNPrMwKumxhhq7Ow0ftbU9C8AGzduHJWVlVxyySW4XK6upHV/99xzD1OmTOGyyy5j7NixXdvvvPNOCgsLKSgooLS0FJfLxVNPPUVBQQHFxcXs2bOHBQsWBByrqakJt9vNrl27mDBhAsXFxTz00EMht/fCCy/k3nvv5fLLL6eoqIjLLruMQ4cOATB9+nQOHjxIaWkpAwYM4JxzzrFMtu/o6OCmm26isLCQ8ePHs3TpUoYNG8Zdd93F97//faZNm0ZHR0fIbfL32c9+losvvphvfetbPPzwwz0ef+CBB6irq6OoqIgLL7yQtWvXAlBdXd01eWHIkCFceeWVEZ0/VEon0DzZkpISXVdXF+9mCJG06us91NZW0tp6gOzsXMrK3BQWyjevEHZ2797NBRdcENK+VVXQ0tI91GgGZMOG9X/Go+i/Sy+9lNWrV1NSUuLI8a0+K0qpLVrrsE8oCfdCpIj6eg8bNy7C6zUy0FtbG9m4cRGABGBCREFVlRFwmWlEZg5Yf3K+RHqSYUchUkRtbWVX4GXyetuprZUCT0JES3CgJYFX4vjjH//oWK9XtEnwJUSKaG21ri5qt12IRCHLIYl0I8GXECkiO9u6kJPddiESQSIsh5RIuc8iMUX7MyLBlxApoqzMTWZmYIGnzMwsysqkwJNIXPFeDmnw4ME0NzdLACZsaa1pbm5m8ODBUTumJNyLpOHkTL5UmCVotjfZr0Okl3iv0Tlq1Ciampo4fPhwbE4oktLgwYOjWvVeSk2IpBA8kw+MXp1Zs9b1O7hw8thChMvjMXp9DhwwlgRyu1O7Tld+vvVySHl5Ro0yIRJZpKUmZNhRJAUnZ/LJLEHhhOC/a0P5OzcR8p9iTZZDEulIgi+RFJycySezBEW0VVUFVj03i3H2VYgz3vlP8SDLIYl0JMGXSApOzuSTWYIimrQ2qqD7LztjLkvT0tJ7D1i885/iRZZDEulGgi+RFJycySezBEU0mVXPzXX/MjK61wPsqxp6rk28b7ddCJGcJPgSSaGwsJxZs9aRnZ0HKLKz86KWEO/ksUV6MgMwf6EsQyP5T0KkB5ntKIQQUeY/1GgKpecL0m+2oxDJTGY7CiFEAvAPvCoqjDwmcwjSPwnfjuQ/CZH6JPgSQogoUgqGDQvs6TJzwIYNk4WYo03WhRTJSIYdhRDCAVoHBlrB96P1nHRm1kXzL8+RlZUYpSpk+Dg9yLCjEEIkkOCgqa8gKtLaYOksUeuipWOxXBEeCb6EECLO+lMbLJ0lal20RA0KReKQhbWFECLO/EtT1NR0z5IMdYZkusrNtV4XMt510cIOCvd5YFsltB+ArFxwuWG0jFGmMsd7vpRSA5RS7yqlfuP0uYQQIllFWhssnSVqXbSwiuXu88DmRdDeCGjj5+ZFxnaRsmIx7FgB7I7BeYQQImmZQ43+QilNkc4SdV3IsILCbZXQETRG2dEOWyoca5+IP0eDL6XUKOBq4CEnzyOEEElrnwf9bD5Lr6oxaoMt3BN2bbB0loh10cIKCtttxiJPNEvvVwpzOuerGrgLGOrweYQQIvn4hpxURzvDsj6h4opq1sysRO1fx5o1xje11AZLTuXlIQaCWbm+IUcL2yol9ytFOVbnSyl1DXCV1vrbSqlLge9qra+x2G8RsAggNzd3YqNV9qQQQiSgftflei4/4Iu36/lZeTB7v9T5Sgf7PPDmTTYPKpjfGdPmiPAkYp2vacC1Sqn9wH8DX1JKbQjeSWu9TmtdorUuOf300x1sjhBCRE9U6nIFDTl1BVq+7ZEGXlL1PYmMLofMEdaPZcV52qZwjGPBl9b6+1rrUVrrfOBGYJPW2i68FyKtyJdjcjLfN6Xg/vu7c7I6OyOsy2X35dqPL10p8JmESmpgQFCG/oAso+SESEkxWV6ot2FHf7K8kEgHibwkihPq6z3U1lbS2nqA7OxcysrcFBYmx4X6t72h4XZ+9av7OX68O1V24EA4ebJ7/7DrcpllBvxnuw3IgsnrIs71yc+3rn2Vl2ckpIsEJbW+klKkw46ytqMQMZZOX4719R42blyE19sdXGRmZjFr1rqED8CC275mzT5aW/N7fU5Hh9GbGZYof+lmZFj3vCnVSefeJ+ULXYgoSsScLyGEhf4siZJsw5W1tZUBgReA19tObW3ir7MS3PbW1r6HApcti6AsxOhymL3fSKyevb/fwZFtgc8RB6R4pxAJIqLgSylVH+2GCJEuwqp+7ScZc3laW60jSrvtUbfPY8wofCLD+BlG4BHcxuxs+zZ3dCROXS7LAp+D/oH7hh8Yw5vbEj/wFSLV2QZfSqk5Nre5wJkxbKMQKSXSJVGScbHe7GzriNJue1T1c9mW4DaWlf2AzMx/WO67bJmRgF9REf+6XF0FPnP2o+gkL2c/677+DcqnPWnsYFfUUwgRM70VWX0K8ABWf8MNdqY5QqQ+M6m+stIYaszNNQKvvpLt+zNcGS9lZW7LnK+yshjM4rJbtiXEwpXBbS8qepKMjFP47W//k/b2QQwdCv/+77BlS/dC2PffH0HOlwPKy6H8M5daF++U8gVCxF1vwdd2YLXWekfwA0qpLzvXJNFfyTy7LF2EXP3aT26udaJ+X8OV8WR+7uLyebTr4Qmx58eq7T/60ZcZN24QLS3dsxpv8hXQGTYsMQKvLi639UxKKV8gRNzZznZUSk0HGrXWPf6nUkqVaK2jPi1RZjv2XzLPLhO9S7cSFf0WVD2+i696fH/0u7J9rEj5AiEcFfXZjlrr16wCL99jEiElqGSeXSZ6F9ZivcIINBwqXBkcaCVk4AWWMymTbcasEKnI6YW1RYzFfXaZcFQkw5Vpy+zhkZ6fLsG9p+aMWZDPlRCxJMFXisnOzqW1tedQS0xmlwmRaEaXp3WwFay3GbMSfAkRO4mUHiqioKzMTWZm4FBLzGaXCSESWjLOmBUiFfUZfCmlPqeUelgp9aLv/oVKqX92vmkiEoWF5cyatY7s7DxAkZ2dJ8n2Qggg8gK/QojoCqXn61HgZeAs3/3/BZY41SDRf4WF5SxZsp8VKzpZsmS/BF5CCMC+wO9VV0kSfsrqxyoPwjmhBF85WuungU4ArfVJoMPRVgkhRJJLxFmFVjNmb7kFHnssuZatEiHq5yoPwjmhBF//UEqNwFfpXil1EdDqaKuEECkjEYMQpyXyOpzl5bB/P3R2Gj9/+9vkW7ZKhKi3VR5EXNkWWe3aQakJwL8BBcAO4HTgK1rrbdFujBRZFSK1pGth2Px869UI8vKMgCeRZGRYLwSulBGgiST2RAbWKwQqo/ab6LeoF1n1sxO4BLgY+CYwDtgT7omEEOknGRcDj4ZkmlUoSfgpzG4dT1nfM+5CCb7e1Fqf1Frv1Frv0Fp7gTedbpgQIvklUxASTckU0Ngl4bulOk3yc3CVB9E/tsGXUupMpdREYIhSarxSaoLvdimQZfc8IYQwJVMQEk3xCmiChw/7yCoBZNmqlDa6HCavM9YzRRk/J6+TwsMJoLeFtW8BFgIlgH8iVhvwqNb619FujOR8CZFaEi3ny+MxhjwPHDACQLfbuXbE8lwAVVXQ0gJr1hhBlNawdCkMG2Y8JoSIvkhzvmyXF9JaPwY8ppSaq7X+Vb9aJ0SCqK/3UFtbSWvrAbKzcykrc0sdNAeZwUYoQYjT702s1zWM5TqcWhuBV02NcX/NGiPwqqmBigrj8YRd/FuINNTnbEcApdTVGIn2g81tWutV0W6M9HwJJ9XXe9i4cRFeb3c3TGZmlqwAkACi/d4EBxtaw+jRyTMDMRIrVsDzz8PWrd3biovh2mth5cr4tUuIVObYbEel1Frgq8AdgAK+AuSF3UIh4qy2tjLgyx3A622ntjbFp94lgWi+N1VVRq+P+XelOfxmFXhBaiT/aw2trYGBFxj3W1tDy/0SQsROKLMdL9ZaLwA+0VqvBKYC5zjbLCGir7XV+lvWbruInd7em3CKtPoPv5kBmDn8NnSo9XNSIflfKbj/fqOny19xsbFdhhyFSCyhBF/HfD/blVJnAV5gtHNNEsIZ2dnW37J220Xs2L0HDQ23h1UpXikj36miwgi4MjK6857+4z9St6SC1rBsmXXP17Jl0vMlRKIJJfj6jVJqGPAz4B1gP/DfTjZKCCeUlbnJzAz89s3MzKKsLAW+fZOc3XuzadN9YRdpNQMwf/ffDzfdBGvXdveApVJJBaUgO9u65ys7W3q+hEg0fQZfWut7tNYtvhmPecBYrfUPnW+aENFVWFjOrFnryM42at5kZ+dJsn2CsHtv/va3Uy337y1Pyxxq9DdxInR0GEFYW5vRE7ZvX/wDrw0bAodUN2yI7Dj+OV8VFcayQBUVkvMlRKIKdbbjxUA+fqUptNaPR7sxMttRCOEv3DUS/XO8iouN4CMnBz76qHuf4mLYssUIeOJpzhzYuBFOnuzeNnAgzJoFv46giqLU+RIi9pyc7fhfwGrgi8Ak3y3sEwkhRLisKsUPGgRHj1on4CtlBBsVFUaAVVERGHgB1NUFBl7x6BXSGn7/+8DAC4z7v/99ZG2qquoOvKB7+DXRAq9wJlAIkar67PlSSu0GLtShdJH1k/R8CSGC+VeKHz4cjhwBr7f7cauK+Wadr85OGDAg8Hj+PV/x7B3qLQ/L7n/bWFfNj7ZEW/FAiP5yrOcL2AGcGX6ThBCi/8rLjSHGzk449dTAwAusE/DNwGvixMDtOTnGUOTEicbj5hBlS0vse8DybKol2m03A5dQZ36GJJLFIPuhspKwJ1AIkYpCCb5ygF1KqZeVUs+bN6cbJoQQwewS7YO3+5deKC42ku3NIUgzABswoLsMhf9wnZ1oxyn33mvkePkbONDYbiXqgcv2KngnqBrtO0uN7Q4J9f0TItXZru3op8rpRgghRChyc60T8IMLpfrnft1/vzHEaJafOO00uOee7n1DCbyincyutZF7dvKkUfqira37Z12d0dsX3KaoBi5ag7cF3vMtBjlhjRF4vVcD59ssBmm1ZlOYNSxCff+ESHWhlJr4k9UtFo0TIp3U13uors5n5coMqqvzqa+XTORgVgn4doVSzQR0M7nerAJ/5Ejgfv5LEVnprWp+pMOV/sGhWQqitdW4P2yYdUxjF6BEFLgoZQRc51cYAdeTGd2B14Q1eJ5QgUnx/+9XUeklC+f9EyKlaa0tb8Drvp9twBG/WxtwxO55/blNnDhRC5GOtm/foN3uLF1VRdfN7c7S27dviHfTEs6GDVrn5WmtlPFzQ4gvUWen1hUVWoPx0+p+KM81b309J9Q29Xbf34YNWmdlBbYhKyv067dtgIfuW2en9XkGf6o3fHue1nW+i66rMPavC/9FiPT9EyIRAXU6gngnpDpfsSKzHUW6qq7Op7W153hMdnYeS5bsj32DUlR/hg+1DixR0dkZ+8rxUZ3taPZemUOPgOf9x7il6mY6OnpeWN6ZH7P/X0d0b/D1kkn5fJHOIp3taJvzpZQa3tsTtdYfh3syIYQ1WfQ7NqqqAlOVzFpYoSTbB1fNX7o0tOdGU3l5lEoy+Ade5lCj+79YdM9cy8AL4MDfPxu4obfAa58HtlVC+wHIygWXG0ZLLQkhTL3lfG0B6nw/DwP/CzT4ft/ifNOESB+y6HfsBMcLoQZe5sxIc+ke/xyw4P17u++0kM6vFGQOC+i9qlx/M+0nPmN73NzPfRK44R2bZLl9Hti8CNobAW383LzI2C6EAHoJvrTWo7XWY4CXgVla6xyt9QjgGiCCxS+EEHZk0e/E5Z8cb/Z0rVljnRxfVRUYkJmBW6wKuPZ1/oBYqagKPb679+rAQfsoNGvwCdxzbjeCtXmd3Yn6VgHYtkroCKqJ0dFubBdCAKHV+Zqktf6teUdr/SJwiXNNEiI1hLOMilOLfstSLtERytI9TsyKDEdf51+xwiIwW6a6rsFu1uSAAbDuRxspv/WM7qFGc6ZkpsXUzHaboXK77UKko74y8jF6vpZjLKydB1QCL4fwvMHAZmAbsBNY2ddzZLajSBWOzExLwjakm75mRYYzuzGa5+/o6HumZ5+fl1Ab/2xe4AxK8/ZsXnQvVogEgFOzHX2J9yuAUkADrwKrdB8J90opBXxGa31UKZUJvA5UaK3fsnuOzHYUqSI/37qYZF6esVROurQhFhJtvUO7WZHRLtQa7vn9e8JMwdX9o/Jamjlf/kOPA7Jg8jpJuhcpx5G1HZVSA4Dva60rtNbjtdYTtNZL+gq8AHxB4VHf3UzfLXHqWgjhoERYRiUR2uA0R9Y77Ae7WZGdnbEZkrQ7vznD06zybwqerem/jub+/REGsaPLjUAryxhCJytPAi8hgvXVNQZsiqRLzffcAcBW4Cjwk772l2FHkSry8gKHb8xbXl56tSHaggt0jhiRONfYVxFX/6G/aBZqTZTzC5GOiHDYMZSE+3d9i2nfrJSaY95CDOw6tNbFwChgslKqIHgfpdQipVSdUqru8OHDIYaMQiS2RFhGJRHaEE1WvVzNzdb7xqN3r69Zkf7rS5rCqRMW3DsWfL+382dnGwuNh1ouQwjhrFByvh6x2Ky11reGdSKlVgD/0FqvtttHcr5EKkmEXKREaEO02OWwWYlnXps5xBd8P5ScKzvh5IvZnT9WOWdCpJOoV7g3aa2/FmGDTge8WusWpdQQ4MvATyI5lkhP9fUeamsraW09QHZ2LmVl7n6XXoilqFUjT/I2REuovVnx7t2zKuLqH3iZAZd/INZbAKb9SkiY+/ofKzjYsisiG2l1fyFE9PUZfCmlRgH/BkzDSJg3Zy029fHUkcBjvqT9DOBprfVv+tlekSbq6z1s3LgIr9eYMdXa2sjGjYsAkioAE9GTm2vd8zViBJx6amL37tkNCULPQq1WzzX3ranpDsJC7TULPlZv94UQsRHKsOPvgCeA//Jtugko11pfFu3GyLCjMMlC0yKYmfPV7lfBICsL1q1LvGDLjt2QYKjPjffC3kKIQI6UmvA5XWv9iNb6pO/2KHB62C0UIgzpuNB0fb2H6up8Vq7MoLo6n/p6KUfvr7zcCLTy8oygIy8vuQIviLznqbcSEkKI5BNK8PWRUuompdQA3+0mwGaOkRDRkW4LTZvDrEZvn+4aZpUALFC4dahSYXml4HwxmakoRPILJfi6FbgB+Jvvdr1vmxCOSbeFpmtrK7vy20xebzu1tbIYcaQSrQBrpMJZ2FsIkRz6zPmKJcn5Ev6SfbZjOFauzMB6AQjFihWdsW5OSki15ZX6ky+WzFKpXIpIPY6VmujHbEch+qWwsDxlg61g2dm5NhMMUnOYNRZSbXmldJypGDzJwuy9BAnARHILZdjxEeB54CzgbGCjb5sQIkrSbZg1FnJt4la77SLxVFYGzm4F436ljMaLJCezHYVIAIWF5cyatY7sbGMx4uzsPGbNWpc2PX9OiMfySn0tASTCk2q9l0KY+hx2xDfbEXjSd38eMttR9EM65XKFI52GWWPBHJaKVb6QLN8TfXaFdaX3UiS7cGc7HkJmO4p+kJIKoi/RLA8RbmmKSPkvAWSWfzDLQ7S0SA9YpFJtcXghTDLbUcSUVK4XvUnmKvb9WThb2JPZjiKRRTrbMZTlhR7DmN3Y4rv/WeBftdZR7/2S4Cv1SUkF0ZtkLw8hSwAJkV6cXF6oyAy8ALTWnwDjwz2REJB+letFeJI5wVqWABJChCqU4CvD19sFgFJqOKEl6gvRg5RUEL1J1vIQvS0BlJ1t9H7Z5q/t88Bz+fBEhvFzX+LnP6bCsk1CxFMowde/An9WSt2jlFoF/Bn4qbPNEqlKSiqI3iRrgrXVEkAlJTBwILS1GftYLm+0zwObF0G7MQGF9kbjfhgBWKwDoVRZtkmIeAop4V4pdSHwJUABtVrrXU40RnK+hOifVCjjkcwJ1v5L/oSUv/Zcvi/wCpKVB7P399weJB4TFJI9Ly8e0nVpqHTgWMJ9LEnwJUTkzDIe/gt0Z2ZmSc9inGRkWOd7KWUMSwLGUKPNBBTm9z0BJR6BUEjXJbpI/bfU5mTCvRAiCdTWVgYEXgBebzu1tbIWSzyElL+WZbOT3fYg8ZigkKx5efHgX//tyiuNoDgjw7j/1lsyGSOdSfAlRIpobbX+xrXbLpwVUv6ayw0DgnYakGVsD0E8AqFkzcuLB6WMHq+ZM+HllwOD4ldfhSeeiF/bRHxJ8CVEEqiv91Bdnc/KlRlUV+dbrggQizIeMsstdOXlRu5VXp7xJZyXZ5GLNbocJq8zcrxQxs/J64ztIYhHIBTSdYkuSsHu3T23HzsmC4SnM8n5EiLBhZrL1Z+cr1AS9ZO5+nwqS+YJCukguPCuP8mTS36ScC9EigpnSaZIZjuGGrTJLDchwmO15JQ/u4XDRfKINPiSYqkpJBXKDIiewsnlKiwsD/s97y1R3/9YTid3Sw+OSDVm/beZM40cr2PHuh8bOBDuuy9+bRPxJTlfKcLsvTB6SDStrY1s3LjIMjdIJBenc7lCDe6cTO6Wwp0iVVVVwYsvwvr13Xlyubnw6KPyx0U6k+ArRUiZgdTl9JJMoQZ3TiZ3V1YG5pKBcT+pE5KTcNkg4QyljEBr/34jx6uxUQKvdCfBV4qQMgOpy+klmUIN7pyc5ZbMC2pbisKyQUKI1CUJ9ykinKRsIYLFO1/QLpl/xAg49dQkzAPr57JBQojkIAn3aa6szG05Yy1aQ1MitUWSqB9NbnfPMhaDBsGRI9DcbNw388AgCQKwdpsuO7vtQoi0IsOOKcLpoSkhnGQ1pDl0KHi9gfslTR5YP5cNEkKkNhl2FEIkpKRewNnM+erw68obkBVW9XohROKThbWFECklqRdw7ueyQUKI1CY5X0KIhGSVB5ZUCziPLpdgSwhhSXq+hBAJSRZwFkKkKun5EsJCvEsvCEN5uQRbIkns88C2SmNGa1YuuNzS8ylsSfAlRJDghabNpZoACcCEED0DrbOugn2PdU+wMIvqggRgwpLMdhRx193L1IhSA9C6g+zsvLj1NknBWiGELauZrCjA4rtUiuqmPCmyKpJScC+T1h1AfHubZKkmIYStbZVBgRdYBl4gRXWFLUm4F3FltSC4KV4Lg9stND1kyPAYt0QIkXDCCaikqK6wIcGXCFt9vYfq6nxWrsygujqf+vrIFwvuqzcpHr1NZWVuBgwY1GP7p58e6de1isQXnIWRQFkZ6SvR3hTbgEoF3h2QZSTdC2FBgi8BhB5QmcOERk6U7hoejDQosetlCvVxJxQWljNo0NAe2zs7vXHpiROxUVUFS5d2f7drDUtv3UPVjdXwRIaxWPY+Cb5jansVvBP0pryz1NgeLy63EVj5G5AF535LiuqKkDkWfCmlzlFK/UEptVsptVMpVeHUuUT/hBNQWQ0T9md4sKzMTWZmluVj8VwY/Nixjy23S95XatIaWlqgpqY7AFt66x5qHh1LSytorbtnsCV7AJZoPUl2tAZvC7xX0x2AvbPUuO9tiV+77VYvOH1afNojkpKTCfcngX/RWr+jlBoKbFFK/U5rvcvBc4oI9BZQBSe7RzsZ3Tx+Is12BKPHzXrGo+RwpCKlYM0a4/eaGuMGY6m4opo1Ny1FmSNKHe1GwnWy9mhsrzIClwlrjIs2A5rMYVBUFe/WBVLKaCcYAdd7Ncbv51d0tz9eglcvCJ4BKaUmRB8cC7601oeAQ77f25RSu4GzAQm+EkwoAZVZDsJuVk9/gpLCwvKEq59VVuYOmIUJ8e2JE84zA7Camu5tAYGXKVlnsPn3JIERwJg9SedXGI/HM6CxYgZg7/m9KfEOvKxYzYBM9kBdOComOV9KqXxgPPB2LM4nwmMXOJnbA4cle0rFoKSwsJxZs9aRnW0MLWRn5zFr1rqECxJF9GhtDDn6W7phTc/RrVjOYNvnMXLNopFzZgYy51cYwcyTGd2BVyIGNNDdM+fPPwcs3sx22AXkyRqoC8c5HnwppU4FfgUs0VofsXh8kVKqTilVd/jwYaebIyxY5V35B1S9lYNI5aCksLCcJUv2s2JFJ0uW7E/JaxQGM/CqqYGKCujshIqFe6h5aUlgABbLGWzmUFa7kYsZlZwz/6E8U6IHXmaAOK+zO3C0C8Bimc/mPxnALiCPZ6mJaAbuIuocLbKqlMrECLw8WutfW+2jtV4HrAOjwr2T7RHWAvOueq5laJ/PpaTiu0gJSsGwYUbgtcYXi6z5xVhgD8OOgVIq9uv1OTGUZdeTlIgBmFJGLpp/z5wZOGYO69neWOazBQ/hFt0Lb38N9MnufZwM1PtaR1Jy0BKeY8GXUkoBDwO7tdb3O3UeER295V1J8rlIB1VVgWlPZgCm1FhgieVzPB6orIQDByA3F9zuKC4EHu2hrOCeJP+cL0jMAGzoebD1B/DeA91BhpjrVjoAABmGSURBVFU7/YOh1j3w0V/gpG/GcsZgOPVcGHNT9NoVPBnANHAonGwzZkA6FaiHElhJDlrCc2xtR6XUF4HXgHqg07f5B1rr39o9R9Z2TEzBSwCBMSzpct1CQ8NvLXvLhEh1Hg8sWgTtft9xWVmwbl2UArDn8n1DjkH6s15gMs12tFpDcUCWff0sreEPV8LfXu75WMYgmPKL6AceWhu5c6Z5nc4HsKF8Lp7IwHbJo8wRUFIjQViURLq2oyysLULSvfi1EWidd95VbNv2WI+ALFXzv4QIlp8PjRbfgXl5sH9/FE4QbvARquBZjfGc5djb8NmzeXDMopevt+DT7jl9PS8S/j2JplhMXrANrBTM9/Vz2AVoXbtmwkWPSAAWBbKwtnBU8LBkdXV+yLXBklVwwCk9e8LfAZvveLvtYfMfQrLL7YlEcGAQi8DLDPC6gq1GGDQCvEdAe419/IfP2hrsgyi7YVet7Z/T2/MiEc8h3Kxcm54vvzQQl7tn4O5Pe2UIMs4k+BIRiXax1UQTPNRqVv0HJADrh1QKaHNzrXu+cqOZChlczNMJ/r1Pg4YbnSrejyMP9oJ7s4ZPgM/kwmdL4C/f7A4ITjT3fG5Hu5HjlftP9scfck7PbVYTCYJFc+ZhuJMBoskqsApO7jffszd7yXOTMhhxJWs7ioj0VRss2UV7GSUR/XVB483tNnK8/GVlGduTRnA5ixPN4G2mq7TFmzfD5m9Hfrz2Rvhgo9EjVPdt+54Yf8cOGoHMmTN7PpYxBIrv67ndDIbOnIlln0LGoOjPPCyqCuzhMgMwp3Pn7JY3Cg6SR5f79rERzzIYQoIvEZm+aoMlu1Tv2YuHpAxoe6mVVF5uJNfn5Rnfu3l5ISTbx6L2UjjnsJoVF0DDX9eG3k6r4+mT3bMAQ5GVa7ygM14M3D4kF6ast++JK6oynjP1USOp3DRohDPJ9hCfIVwwrmX2fiPHa/Z++2tzuY3AM5jKjF29OmFJhh1FRPqqDZbspLxG9CVdQBvClP7y8jBmNsai9lK45whp6EmHnh9kd7xQAy9z+MxqGDH3nyB/vvG7XaK+UrEZqo2mvmp29Yd5nC0V3cO8Ts92TKQJHQlMgi8RsURckzFanF7bMVFyn2LZjiFDhnPsWM88nyFDhjtyvn6Ldq2kWNReCvccdsnbwcygqq9Awe54dj1fGYNgwNDAHDOt4ZlsY/+BQ6HkP+CTuu5k9uDcsUiCWCcDnnDEIiCPZTDqVCmTRHm/okiGHUVCqa/3UF2dz8qVGVRX58ctH8jJtR0TJfcpUdqRsOyCklCCFcvnRVg0NZxhxHDP4XIbvU19yco1zvvW1wLzud76WmB7rI6nBhqB1PkVcNF/GQEVGD8nPwxf+ah7+AyMwMoM1E62Gfc/W2I8P3MYbF9uH2CGsryQE8s2RcouWH7rluRbFsi/0K257JI5A9TbEvlST4n0fkWR1PkSCcOumGuq1Q6rrs63GdLMi+lyTbFux8qV9vWJVqzotNgeZ08OBN3Rc7saAPNO9tzel0iKpoZb6yvSc5i9CgM/AyePBj5unu/tb0DnsZ7PzxgCN/q1z262Yyi9Ib21/7p9xvN7KyDqP/vQ7jxOFK+NVG/XYopGbbdYcaL2WSK9XxYirfMlPV8iIk70UCVlQnYEEiX3KdbtSMQZsr1+jq0Cr96298WqV6iv9f96G0aM0jk8fy4nf8l+Mm7qJP+uNjwfvtZzJl3+fOvAC4zt/n/EByeDl/469FmBtr2NB7qfbzdLb+BQ616Xj94yiq+aPUm9ncOKk5MkQplx2Nv77cfjMQr/ZmQYPz3x6BhyYuH2aC+zlSAk+BJhc2q4KlGCEqclShAS63Yk2gzZPj/HdtP0e5u+35tQSwSY9nnCDxTCPIe5RFJjoxGvNDbC1+6awI/3bAicSdfXl+f+J3p/3OyJsrsPvqDG5jzBBUQth0ozjVIT79UYS/68V2Pc//BVX/FV35BVKOfwb5OTQ16hDvv2EWhYvY+LFsUhALNbuL0/I2x2Aard++X0bOIokeBLhM2pHqpECUqcFo0gJBo9j7EOhpzMo4tEn5/js66yfqLd9lCEWiLA/NK301uPSajnwFgUvD2oY83rzeInP8nt+ZnyL98QrK+AZHtV4Jew+SW9vap7n22V2C6bE1xAdPI6o4SEv5MfG4GWv9bdFj12mh4BmF3voF3P45aK6HzJm9fSlz56yKzex/Z2Y3vMBFf9n9dp/PTvjYxEqL25SZYbJrMdRdic6qFyeoahk8KZNWhXpgPMPKzej9Fb9X2r44bbDieDoajMkI3SzKc+P8f/91vrJ9ptj6be6m/1NVQZBrulkFpaRvVcKmxitZEIjkV+Xm8zKv0TsSFwKZ7zK7pLEdj27mjrAqLbKntWyQ8OtGyXG9JGr2BfnyG7Np1o7j53f2comtdi18sZwvvt+FJXoXCq6n+oy2zFYjZxFEnwJcLmVA2sZK0dFslSRMFBSDjHsOuxefHFCk6ePNavdiS8KE7N7/NzHM9ck97OEcXka7slkrKzDwQGp1ob5R6sAi+TXZv9v4Tfq+kOwoITsW3XLLQZ5u3tNZrX2TPxO/iYoSRrh1qKI5Ivef8/IjKHG2U3Ok8E7hNiTa6YLHUViqKqwLpe5nvf3zpfoZTLSLLcMBl2FGFzcriqsLCcJUv2s2JFJ0uW7E+KwCAaw7DhHMOux+bYsebUn7AQbgJ6L/r8HIeTaxJttufOi+pf8W43ZGYGvp6Zmf+grOwHgX9M+fdqDIngdQklETvcyQJ25xuS232+M2capS5CPWawUHOyILwv+eAhMm+zEbQMGkFXrt7UDUYZjhDe74Ra6ipeVf/j+e81AhJ8ibAlWu5OvEVjGDacY4Tbw5hSExai+Ndtn5/jSGYnRkuMzl1eDqtWvcOwYQeATrKz9zNr1jeYOPF/ev4xZa5lWHxf+G0LJRE73AkJdrl3Z19t/DSXKLro0dCPGcyqTXa5b+F8yVsuw+SFgaeGlKsXLKKlrlJNPP+9RkDqfAnRT9GolxXOMezqoQ0cOMSygrxSA/inf3oMiP2QbtQr6Me65k88K2vH8Nxhv0/htC04ETs458tqWCqU48er/lO4tdes2Nb3UkbwJSITh3+vkdb5SrvgK1GWdRHx4cT7H43isOEew+o6gB7HMA0YMAitNZ2d3ojbGC5HiuZG44svUim4xEnM9LXsTHD+U0dbYP6T1XtsEcDUH4HaZmg9qZz9/72/n4UELxwqQifBVwjSpYK6sObk+x+NoC5ax3j22VvQIRYCdbKqvmMV9OMRBMUz6EsVdgsuW722VoIDk6AApv4IbPwQvH5faXH7/72vz6h8nlKGBF8hSJRlXYQ9J3sm0+X9t1/Gx4pzS/sk3XJCvZGeCuf0VnU+QNCQXFAAU70PWi1WfYr5v+9QAyvpSU0JkQZfaVVqIl0qqCerSEo2hMPp9z9RhrTtSijY7RttZoeG2Y7gDo+kLJqbZNPYk0qor2FwQntQ/afWk9Z/cMT8//dQ602FUj5BpKy0mu2YLhXUk5XTazs6+f47teRSJKxKKAwYMIiMjMyAbU4UsK2qgqW+SWxlZW4GDszipZfW8Ic/rHDsnDGRZNPYk0rm8L73sZu15lfN35i12lPM/3+XQF2EIK2Cr0RbW04Ecrpnysn3PxqBY7QWK7cqoXDddb9g9uxHHC0PojW0tEBNjRGAFRSUs3v3Ft5+ewnHj3+W005L4pIkSTaNPWns8xjJ9T1kBNa8CiEXKmH+f5dAXYQgrYYdk7WCerpwqnK+Kdz3P5xhxP4GjtEecrWrXO/kZ10pWOOro1lTY9xgLBUVsGZNBUpVOHZux4W6xIkIz7bKnlXdAQZ9Fq7/KKxDJcz/7y63dc6XBOrCT1oFX5CEy6kkgFjlMsVibcdQ3/9wg6H+Bo699Zwl+uc1+PNx661uamq627wmCquLWPF4jIWDDxwwllFxux0uKik5OtFnu3bixxEdrvBUKMwH2oEs4NQI29UfEqiLEKRd8CXC43QSvL+E+cuV8IOh/gaOyTIZJDjQOu+8q9i27bGu625paeS221oCnrN0afQDMI8HFi2Cdt/L3dho3Ic0q+qd7GzXc4ygtzuK6372mwTqog9plfMlwud0EnywRFnb0W62oN32/i65lAyTQawmFdTVre36fGgNL720hj//+TuUlv6Czk6oqOjOAYtmVZvKyu7Ay9TebmwXSSSauXRRXPdTCKdJz5foVbL0yESbUgMsC5UqNcD2Ob0NafY1dBuLIddImcN7jY3zyM6eRlnZDygqetL3aHdEpRQMHtzClCnVzJixDKVu7coBGzYsuj1fB2w+fnbbRYKK5hCdzDIUSUSCL9Erp5PgE5VdhfhQK8f7C2XoNpGGXP0FDu9l0Nqaz8aN6wH8ArBuM2asRGsYNsyY9m8m4Uc75ys31xhqtNoukky0huiiOYQphMNk2FH0KmGmb8eYfc0g6+29CXXoNlGGXP1ZDe95vZ+htvY+vy2BkdWgQYGfDyeS7d1uyAoarcrKMraLxBOtMiq9knIgIolI8CV61d9cpmQVzaAzkYduPR7Iz4eMDOOnJ+g70W4Yr7XV6E3IzMyipORbMf98lJfDunWQl2cEd3l5xn1Jtk88MStAPLrcqAeWZXwWQ60PJkQ8yLCj6FM6lueI5jCgE0O30Sj/EcqMQbvhvezsA2Rn58V1aLS8XIKtZBDTMioyy1AkCQm+hLARjaCzvt7D/2/v3mPsKMs4jn9/XFoqN0tbI7dSRCRSYrlUE8AQBINACGisBG1iuST8I0ET8ZLUAMb0j8aoBEGxSMNFRGMNBCOmJVUghKAU6NJWQSpZpKBcLF7QhsL28Y+Z7R52Z/Z2zsycmfl9ks2e856ZMzNP3+w8fd9533fnzjfGlHfTddur6T/GGzE4nNSsWPHOBA2S7r0bb1zA0qWD0zp/a5d+bvk1q4q7Hc0KMpwk7djxj3eUz5o1p6uuuV5N/zGZEYPu3rNu1WEaFbOyOfkyK0hWkgQwY8Z+XbWoTXUOsjx5IwNHly9dCoODsGtX8tuJl01FWwftmI3HyZdZjm5HaBXV3ZI319h4c5Bl8YhBK0NbB+2YjcfPfJll6MVzVUXNkdarOciGW7BKXR/RWqmNg3bMxuPkyxqrmxGBvRih1YtZ67OuYTqz7+fxiEEzs/I5+bJG6rblqhddht1OV5F3Db2cfd/MzMrn5MsaqduWq151GXbT3ZJ3DcmM8mNXqZ41a860jmNmZuXyA/fWSN22XPXDCK38cx2beJmZWX0UlnxJWi3pFUmbizqGWZ5u5xbqhxFaU21l27Fje0FnYnlKWbPQzBqnyG7HW4EbgNsLPIZZpl487F71CK0zz1zBPfdcwq5db+0u22OPvZk584AxE7dC/0xa2Yulj+qgVysNmFn7FNbyFREPAf6vuFWiH1quekHSmPcLF15YeZdontIWUe4DvVppwMzap/IH7iVdDlwOMD9vym2zaai65apb69cvZ2ho5zvKhoZ28uyz97Fo0TIef3wVEUNIe7Jo0bK+uNZSF1GuWJVrFralddGsqSp/4D4iVkXE4ohYPG/evKpPxxquTs/o5N/cn2dg4LbdU0tEDDEwcFtfXEubFlGuas3CNrUumjVV5cmXWVnqdtPKu4lLe/Ztd1cTFlGebIJe1YhYd3ea1Z+TL+tbvW6lqttNK+/mnjeZaj+0LvXDFB3dmEqCXtVzhW1qXTRrqsKe+ZJ0F3A6MFfSNuCaiLilqONZsxQxkqxuN628GfKT971fM7IXup3Vv2pTfWatiucKi1oz1MzKU1jyFRGfLeq7rfmKeHC7jjetvJt7t9NoFKnOAx3qkKD3YhoVM6uWux2tLxVxE6x7l9iwpkyj0Y/q8Mya//3N6q/yqSbMshTRSlX3LrFOdW5d6md1aVXyv79ZvTn5sr5U1E3QNy0bT5MSdDPrX06+rC/5JmhVcYJuZkVz8lVTbZjh2jdBMzNrIidfNeQFfc3MzOrLox1rqG6ThZqZmdkIJ181VIe5iMzMzCybk68aqsNcRGZmZpbNyVcNNWWyUDMzszbyA/c15GkYzMzM6svJV015GgYzM7N6crejmZmZWYmcfJmZmZmVyMmXmZmZWYmcfJmZmZmVyMmXmZmZWYmcfJmZmZmVyMmXmZmZWYmcfJmZmZmVyMmXmZmZWYkUEVWfw26SXgWeL+jr5wKvFfTddeI4JByHEY5FwnEY4VgkHIcRjkVidByOiIh5U/2Svkq+iiRpQ0Qsrvo8quY4JByHEY5FwnEY4VgkHIcRjkWiV3Fwt6OZmZlZiZx8mZmZmZWoTcnXqqpPoE84DgnHYYRjkXAcRjgWCcdhhGOR6EkcWvPMl5mZmVk/aFPLl5mZmVnlap98SVot6RVJmzvKPiNpi6RdknJHJUg6W9IzkrZK+no5Z1yMLuMwKGmTpI2SNpRzxsXIicO3JT0t6SlJd0t6d86+jakP0HUsml4nvpXGYKOkdZIOydl3maRn059l5Z11MbqMxVC6zUZJ95Z31r2XFYeOz66SFJLm5uzb+DrR8dlEsWh0nZB0raQXO67x3Jx9p37viIha/wCnAScCmzvKPggcAzwALM7Zb0/gL8D7gBnAAHBs1ddTdhzS7QaBuVVfQ4FxOAvYK329EljZ9PrQTSxaUicO6Hh9JXBTxn4HAc+lv2enr2dXfT1VxCL97I2qz7/IOKTlhwNrSeabHFP/21InJhOLNtQJ4Frgqgn2m9a9o/YtXxHxELB9VNmfIuKZCXb9CLA1Ip6LiJ3Az4ALCjrNwnURh0bJicO6iHg7ffsocFjGro2qD9BVLBolJw7/7ni7L5D18OsngPsjYntEvA7cD5xd2ImWoItYNEpWHFLfA75KfgxaUSdSE8WiUcaJw0Smde+offLVhUOBFzreb0vL2iiAdZIel3R51SdTsEuB32SUt7E+5MUCWlAnJK2Q9AKwFLg6Y5PW1IlJxAJgH0kbJD0q6ZMlnl4pJJ0PvBgRA+Ns1oo6MclYQMPrROqKtFt+taTZGZ9Pq060OflSRlkrMvwMp0bEicA5wBcknVb1CRVB0nLgbeDOrI8zyhpbHyaIBbSgTkTE8og4nCQGV2Rs0po6MYlYAMyPZGbvzwHXSTqqtBMsmKR3AcvJTzx3b5pR1qg6MYVYQIPrROqHwFHA8cDfgO9kbDOtOtHm5GsbSZ/2sMOAlyo6l0pFxEvp71eAu0maURslfTD2PGBppB31o7SmPkwiFq2oEx1+Cnw6o7w1daJDXiw668RzJM+RnlDeaRXuKOBIYEDSIMm/9ROS3jtquzbUicnGoul1goh4OSKGImIXcDPZfwenVSfanHw9Bhwt6UhJM4CLgFqP1pgOSftK2n/4NckD2WNGvdSZpLOBrwHnR8T/cjZrRX2YTCxaUieO7nh7PvB0xmZrgbMkzU67G85KyxplMrFIYzAzfT0XOBX4YzlnWLyI2BQR74mIBRGxgOSGemJE/H3Upo2vE5ONRdPrBICkgzveforsv4PTu3dUPcKg2x/gLpLmwLdIKsllaZC2AW8CLwNr020PAe7r2Pdc4M8kIxWWV30tVcSBZITGQPqzpaFx2ErSJ78x/bmp6fWhm1i0pE78kuQP6VPAr4BD020XAz/u2PfSNGZbgUuqvpaqYgGcAmxK68Qm4LKqr6XXcRj1+SDpCL821onJxKINdQK4I722p0gSqoPTbbu+d3iGezMzM7MStbnb0czMzKx0Tr7MzMzMSuTky8zMzKxETr7MzMzMSuTky8zMzKxETr7MrDEkDaZzDiHpkS6+52JJh0xxn5mSfi5pq6TfS1ow3eObWbM5+TKzWpK013ifR8QpXXz9xSRz+UzFZcDrEfF+kkWJV3ZxfDNrMCdfZlYKSZ9PF6gdkHRHWnaEpPVp+XpJ8ycov1XSdyX9DlgpaY6kdZKelPQjOtZZk/RG+vt0SQ9IWiPpaUl3SlL62dWSHpO0WdIqJZaQTCZ5p6SNkmZJOknSg+lC42tHzXw97ALgtvT1GuDM4eOYmXVy8mVmhZO0kGSx3jMiYhHwxfSjG4DbI+JDJIs6Xz9BOcAHgI9HxJeBa4CHI+IEkhmo5+ecwgnAl4BjSWbwP3X4OBHx4Yg4DpgFnBcRa4ANJGtfHk+yAPn3gSURcRKwGliRcYxDSVYPICLeBv4FzJlMfMysXZx8mVkZzgDWRMRrABGxPS0/mWQxZ0iW8vjoBOUAv4iIofT1acBP0u/8NfB6zvH/EBHbIlkgdyOwIC3/WPp81qb0HBdm7HsMcBxwv6SNwDdIFs8dLauVy0uImNkY4z4zYWbWI2JyiUjeNp3l/53kPp3e7Hg9BOwlaR/gB8DiiHhB0rXAPhn7CtgSESdPcIxtwOHAtvR5tAOB7ePvYmZt5JYvMyvDeuBCSXMAJB2Ulj8CXJS+Xgo8PEH5aA+lnyPpHGD2FM5pONF6TdJ+wJKOz/4D7J++fgaYJ+nk9Dh7p92oo90LLEtfLwF+G14818wyuOXLzAoXEVskrQAelDQEPEkyovBKYLWkrwCvApeku+SVj/ZN4C5JTwAPAn+dwjn9U9LNwCZgEHis4+NbgZsk7SDpAl0CXC/pQJK/m9cBW0Z95S3AHZK2krR4XYSZWQb5P2ZmZmZm5XG3o5mZmVmJnHyZmZmZlcjJl5mZmVmJnHyZmZmZlcjJl5mZmVmJnHyZmZmZlcjJl5mZmVmJnHyZmZmZlej/a1VagkvZy5cAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 720x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(10, 5))\n",
    "\n",
    "for i in np.unique(y):\n",
    "    # plotting original sampels\n",
    "    plt.scatter(X[y == i][:,0], \n",
    "                X[y == i][:,1], \n",
    "                label='class %d' % i, \n",
    "                c=colors[i],\n",
    "                marker='o')\n",
    "    \n",
    "    # plotting new samples\n",
    "    if len(y_samp[y_samp == i]):\n",
    "        plt.scatter(X_samp[y_samp == i][:, 0], \n",
    "                    X_samp[y_samp == i][:, 1], \n",
    "                    label='class %d new samples' % i, \n",
    "                    c=colors[i], \n",
    "                    marker='x')\n",
    "plt.title('oversampled dataset')\n",
    "plt.xlabel('coordinate 0')\n",
    "plt.ylabel('coordinate 1')\n",
    "plt.legend()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
